/**
 * 
 */
package preprocess;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.*; /* Faites chauffer les regexps ! */
import preprocess.RegexpTools ;

/**
 * @author simon
 * Cette classe a pour but d'extraire le texte d'une page html.
 */
public class TextExtract {
	
	/**
	 * Fonction principale d'extraction basique de texte.
	 * Elle effectu un toLowerCase.
	 * @param html le contenu de la page html
	 * @return le texte extrait.
	 */
	public static String extract(String html) {
		
		/* Pour commencer, on ne garde que ce qu'il y a entre les deux balises body. */
		html=RegexpTools.filterBetween("<body.*?>","</body>", html.toLowerCase()) ;
		
		/* Enlever les scripts */
		html=RegexpTools.removeMatches("<script.*?>.*?</script>",html) ;
		
		//TODO Il y aura toujours moyen d'étoffer cette fonction.
		
		/* Enlever/remplacer les entités html... */
		/* On va en corriger certaines, en mode bourrin */
		html=html.replaceAll("&((ccedil)|(#231));","ç") ;
		html=html.replaceAll("&(agrave)|(#224);","à") ;
		html=html.replaceAll("&(eacute)|(#233);","é") ;
		html=html.replaceAll("&(eagrave)|(#232);","è") ;
		html=html.replaceAll("&(uagrave)|(#249);","ù") ;
		/* Virer les autres entités. */
		html=html.replaceAll("&.{1,10}?;", "") ;
		
		/* Enfin, virer toutes les balises restantes */
		html=RegexpTools.removeMatches("<.*?>",html) ;
		
		return html ;
		
	}

	public static void main (String[] args) throws IOException {
		
		BufferedReader  in = new BufferedReader(new FileReader("data/carbo.html" ));
		String line;
		String html="" ;
		while ((line=in.readLine()) != null){     
			html=html+line ;
		}  
		in.close();
		
		System.out.println(extract(html).replaceAll("\\s+"," ")) ;
		
	}
	

}
